home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Image.be.ifs < prev    next >
Text File  |  2005-05-05  |  7KB  |  227 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Antoine Potten
  8. Title=image.be
  9. Description=Importation pour "image Mediastores" (image.be)
  10. Site=http://www.image.be
  11. Language=FR
  12. Version=1.1
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19. TypeImage=1|1|0=Petite image|1=Grande image
  20.  
  21. ***************************************************)
  22.  
  23. program ImageBe;
  24.  
  25. uses
  26.   StringUtils1;
  27.  
  28. var
  29.   MovieName: string;
  30.  
  31. procedure AnalyzePage(Address: string);
  32. var
  33.   Page, Line: string;
  34.   BeginPos, EndPos, MovCount: Integer;
  35. begin
  36.   Page := GetPage(Address);
  37.   BeginPos := Pos('Aucun rΘsultat trouvΘ', Page);
  38.   if BeginPos > 0 then
  39.   begin
  40.     ShowMessage('No movie found');
  41.     Exit;
  42.   end;
  43.   BeginPos := Pos('<u>Objet de votre recherche</u>', Page);
  44.   EndPos := Pos('<table width="92%"', Page);
  45.   if (BeginPos > 0) and (EndPos > 0) then
  46.   begin
  47.     PickTreeClear;
  48.     Page := Copy(Page, BeginPos, EndPos - BeginPos);
  49.     EndPos := Pos('<table', Page);
  50.     Line := Copy(Page, 1, EndPos-1);
  51.     HTMLRemoveTags(Line);
  52.     HTMLDecode(Line);
  53.     PickTreeAdd(Line, '');
  54.     MovCount := 0;
  55.     repeat
  56.       BeginPos := Pos('<a href=''FicheFilmSY.asp', Page);
  57.       if BeginPos > 0 then
  58.       begin
  59.         Delete(Page, 1, BeginPos-1);
  60.         EndPos := Pos(''' class', Page);
  61.         Address := 'http://www.image.be/' + Copy(Page, 10, EndPos - 10);
  62.         Delete(Page, 1, EndPos+14);
  63.         EndPos := Pos('<br>', Page);
  64.         Line := Copy(Page, 1, EndPos-1);
  65.         HTMLRemoveTags(Line);
  66.         PickTreeAdd(Line, Address);
  67.         MovCount := MovCount+1;
  68.       end;
  69.     until BeginPos = 0;
  70.     if (MovCount = 1) then
  71.       AnalyzeMoviePage(Address)
  72.     else
  73.      if PickTreeExec(Address) then
  74.        AnalyzeMoviePage(Address);
  75.   end;
  76. end;
  77.  
  78. procedure AnalyzeMoviePage(Address: string);
  79. var
  80.   Line, Value: string;
  81.   BeginPos, EndPos, LineNr, IntValue: Integer;
  82.   Page: TStringList;
  83. begin
  84.   Page := TStringList.Create;
  85.   Line := GetPage(Address);
  86.   BeginPos := Pos('<table cellspacing="6" cellpadding="0" border="0">', Line);
  87.   EndPos := Pos('<table border="0" cellspacing="0" cellpadding="0" width="90%">', Line);
  88.   if (BeginPos > 0) and (EndPos > 0) then
  89.   begin
  90.     Page.Text := Copy(Line, BeginPos, EndPos - BeginPos);
  91.     Line := Trim(Page.GetString(1));
  92.     BeginPos := Pos('4>', Line)+2;
  93.     EndPos := Pos('</font>', Line);
  94.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  95.     if Pos('class=yellowlight2', Line) > 0 then
  96.     begin
  97.       SetField(fieldTranslatedTitle, Value);
  98.       Delete(Line, 1, EndPos);
  99.       BeginPos := Pos('<i> (', Line) + 5;
  100.       EndPos := Pos(')</i>', Line);
  101.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  102.       SetField(fieldOriginalTitle, Value);
  103.       Delete(Line, 1, EndPos);
  104.     end
  105.     else
  106.     begin
  107.       SetField(fieldOriginalTitle, Value);
  108.       Delete(Line, 1, EndPos);
  109.     end;
  110.     BeginPos := Pos('<i>(', Line) + 4;
  111.     Delete(Line, 1, BeginPos-1);
  112.     EndPos := Pos(')</i>', Line);
  113.     Value := Copy(Line, 1, EndPos-1);
  114.     SetField(fieldYear, Value);
  115.     if CanSetPicture then
  116.     begin
  117.       LineNr := FindLine('<img src="Movies/', Page, 0);
  118.       if LineNr > -1 then
  119.       begin
  120.         Line := Page.GetString(LineNr);
  121.         BeginPos := Pos('<img src=', Line)+10;
  122.         EndPos := Pos('" border=', Line);
  123.         Value := 'http://www.image.be/' + Copy(Line, BeginPos, EndPos - BeginPos);
  124.         if GetOption('TypeImage') > 0 then
  125.           Value := StringReplace(Value, '/jm.', '/jh.');
  126.         GetPicture(Value);
  127.       end;
  128.     end;
  129.     LineNr := FindLine('<b>Genres:', Page, LineNr);
  130.     if LineNr = -1 then
  131.       LineNr := FindLine('<b>Genre:', Page, LineNr);
  132.     if LineNr > -1 then
  133.     begin
  134.       Line := Page.GetString(LineNr);
  135.       BeginPos := Pos('</b>', Line);
  136.       EndPos := Pos('<font class=white2>', Line);
  137.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  138.       HTMLRemoveTags(Value);
  139.       SetField(fieldCategory, Value);
  140.     end;
  141.     LineNr := FindLine('<b>Durée:', Page, LineNr);
  142.     if LineNr > -1 then
  143.     begin
  144.       Line := Trim(Page.GetString(LineNr+2));
  145.       EndPos := Pos(' ', Line);
  146.       Value := Copy(Line, 1, EndPos-1);
  147.       SetField(fieldLength, Value);
  148.     end;
  149.     LineNr := FindLine('<b>Studio:', Page, LineNr);
  150.     if LineNr = 0 then
  151.       LineNr := FindLine('<b>Studios:', Page, LineNr);
  152.     if LineNr > -1 then
  153.     begin
  154.       Line := Trim(Page.GetString(LineNr));
  155.       BeginPos := Pos('">', Line) + 2;
  156.       Value := Copy(Line, BeginPos, Length(Line));
  157.       SetField(fieldProducer, Value);
  158.     end;
  159.     LineNr := FindLine('<b>RΘalisateur:', Page, LineNr);
  160.     if LineNr = -1 then
  161.       LineNr := FindLine('<b>RΘalisateurs:', Page, LineNr);
  162.     if LineNr > -1 then
  163.     begin
  164.       Line := Page.GetString(LineNr);
  165.       BeginPos := Pos('<font', Line);
  166.       Value := Copy(Line, BeginPos, Length(Line));
  167.       HTMLRemoveTags(Value);
  168.       SetField(fieldDirector, Trim(Value));
  169.     end;
  170.     LineNr := FindLine('<b>Avec:', Page, LineNr);
  171.     if LineNr = -1 then
  172.       LineNr := FindLine('<b>Avec les voix de:', Page, LineNr);
  173.     if LineNr > -1 then
  174.     begin
  175.       Line := Page.GetString(LineNr);
  176.       BeginPos := Pos('</b>', Line);
  177.       Value := Copy(Line, BeginPos, Length(Line));
  178.       HTMLRemoveTags(Value);
  179.       HTMLDecode(Value);
  180.       SetField(fieldActors, Trim(Value));
  181.     end;
  182.     LineNr := FindLine('<div align="justify">', Page, LineNr);
  183.     if LineNr > -1 then
  184.     begin
  185.       Value := '';
  186.       repeat
  187.         Line := Page.GetString(LineNr);
  188.         LineNr := LineNr+1;
  189.         BeginPos := Pos('</div>', Line);
  190.         HTMLRemoveTags(Line);
  191.         Value := Value + Trim(Line) + #13#10;
  192.       until BeginPos <> 0;
  193.       Value := StringReplace(Value, '£', 'oe');
  194.       Value := StringReplace(Value, 'à', '...');
  195.       SetField(fieldDescription, Value);
  196.     end;
  197.     LineNr := FindLine('<td width="145" valign="middle"><font class=black2>', Page, LineNr);
  198.     if LineNr > -1 then
  199.     begin
  200.       Line := Page.GetString(LineNr);
  201.       BeginPos := Pos('0000">', Line) + 6;
  202.       EndPos := Pos('</font>', Line);
  203.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  204.       IntValue := StrToInt(StrGet(Value, 1), 0) * 2;
  205.       if Length(Value) > 2 then
  206.         if StrToInt(StrGet(Value, 3), 0) >= 5 then
  207.           IntValue := IntValue + 1;
  208.       SetField(fieldRating, IntToStr(IntValue));
  209.     end;
  210.   end;
  211.   Page.Free;
  212. end;
  213.  
  214. begin
  215.   if CheckVersion(3,5,0) then
  216.   begin
  217.     MovieName := GetField(fieldOriginalTitle);
  218.     if MovieName = '' then
  219.       MovieName := GetField(fieldTranslatedTitle);
  220.     if Input('image.be import', 'Entrez le titre du film :', MovieName) then
  221.     begin
  222.       AnalyzePage('http://www.image.be/rΘsultats.asp?recherche=' + UrlEncode(MovieName) + '&Type=Film');
  223.     end;
  224.   end else
  225.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  226. end.
  227.